$(document).ready(function() {
	
	iniciarDatePicker();
	llavorValidacio();
});
function iniciarDatePicker() //funcio que activa el datepicker en els caps de data.
{
	
	var hoy = new Date(); // S'agafa  lla data actual i es coloca en el camp data.
	//$('#dp1').val(hoy.getDate() + '-' + aquestMes() + '-' + hoy.getFullYear());
	
	$('#dp1').datepicker({ //especifica quina estructura tindra la data.
		format : 'dd-mm-yyyy'
	});

	function aquestMes() { //funcio que coloca si és necessari un 0 devant del num de mes.
		if((hoy.getMonth() + 1) < 10) {
			return ('0' + (hoy.getMonth() + 1));
		} else {
			return (hoy.getMonth() + 1);
		}
	}

	function aquestDia() { //funcio que coloca si és necessari un 0 devant del num de dia.
		if(hoy.getDate() < 10) {
			return ('0' + hoy.getDate());
		} else {
			return hoy.getDate();
		}
	}
	//fi dataPicker
}

function llavorValidacio () //funcio utilitzada per cridar validarFormulari.
{
	var nomForm;//Variable del nom del formulari.
	
	//**
	// 1.- Es coloca l'escoltador click en el boto que conté la classe enviarFrm.
	// 2.- Quan es fa click al boto amb la classe enviarFrm es realitza un a busqueda
	// de quin es el formulari mes proper.
	// 3.- Es guarda el nom del formulari per enviar-ho a validarFormulari.
	//**
	
	$('.enviarFrm').click(function() { 
		nomForm = "#" + $(this).closest('form').attr('id');

		if(nomForm=="#recorregut1"){
			term1 = $('#origen').val();
			term2 = $('#desti').val();

			//alert('entra a recorregut1');

			if (validarFormulari(nomForm)){

				//alert('El formulari validat');

				calcRecorregut(term1,term2);

			}
		}else if(nomForm=="#buscarRuta"){
			term1 = $('#origen').val();
			term2 = $('#desti').val();

			if (validarFormulari(nomForm)){
				calcRoute(term1, term2);
			}
		}else{
			if(validarFormulari(nomForm)) {
				$(this).closest('form').submit();
			};
		};
	});
}

function validarFormulari(nomForm)
{
	var pass1;
	var pass2;
	var errors = 0;

	// Per cada classe controls dins del formulari, agafa tots els fills.
	
	$(nomForm + ' .controls').children().each(function(index, domEle) {
	
		//***
		//1.- Crida a les diferents funcions que comproven els camps, es passa 'domele' que és el input de referencia.
		//2.- Per passar aquest 'domele' es comprova el nom del input, que es el que dispara les diferents comprovacions
		//segons quin nom tingui.
		//***
		
		if(($(domEle).attr('name') == 'nom') || ($(domEle).attr('name') == 'cognom1') || ($(domEle).attr('name') == 'cognom2')|| ($(domEle).attr('name') == 'origen')|| ($(domEle).attr('name') == 'desti')) {
			if(!comprovarNoms(domEle)) { // Si dona error coloca la classe error, per mostrar-ho vermell.
				if(!$(domEle).parent().parent().hasClass('error')) {// Si ja te la classe error no es repeteix.

					$(domEle).parent().parent().addClass('error');
					$(domEle).next().html('<i class="icon-remove icon-large" ></i>');
				}
				errors ++;
			} else { // Si es correcte nateja la "X" i treu la classe error.
				$(domEle).next().html('');
				$(domEle).closest('.control-group').removeClass('error');
			}
		}
		if($(domEle).attr('name') == 'email') {
			if(!validateEmail(domEle)) {
				if(!$(domEle).parent().parent().hasClass('error')) {

					$(domEle).parent().parent().addClass('error');
					$(domEle).next().html('<i class="icon-remove icon-large" ></i>');
				}
				errors ++;
			} else {
				$(domEle).next().html('');
				$(domEle).closest('.control-group').removeClass('error');
			}

		}
		if($(domEle).attr('name') == 'sexe') {
			if(!validarSex(domEle)) {
				if(!$(domEle).parent().parent().hasClass('error')) {

					$(domEle).parent().parent().addClass('error');
					$(domEle).next().html('<i class="icon-remove icon-large" ></i>');
				}
				errors ++;
			} else {
				$(domEle).next().html('');
				$(domEle).closest('.control-group').removeClass('error');
			}
		}
		if($(domEle).attr('name') == 'data') {
			if(!comprovarDataNaixement(domEle)) {
				if(!$(domEle).parent().parent().hasClass('error')) {

					$(domEle).parent().parent().addClass('error');
					$(domEle).next().html('<i class="icon-remove icon-large" ></i>');
				}
				errors ++;
			} else {
				$(domEle).next().html('');
				$(domEle).closest('.control-group').removeClass('error');
			}
		}
		if($(domEle).attr('name') == 'pass') {
			pass1 = $(domEle).val();
		}
		if($(domEle).attr('name') == 'pass2') {
			pass2 = $(domEle).val();
			var aux1 = $(domEle).parent().parent().prev();
			aux1 = $(aux1).find('input');

			if(!comprovarPass(pass1, pass2)) {
				if(!$(domEle).parent().parent().hasClass('error')) {

					$(aux1).parent().parent().addClass('error');
					$(aux1).next().html('<i class="icon-remove icon-large" ></i>');

					$(domEle).parent().parent().addClass('error');
					$(domEle).next().html('<i class="icon-remove icon-large" ></i>');
					
				}
				errors ++;
			} else {
				$(aux1).next().html('');
				$(aux1).closest('.control-group').removeClass('error');

				$(domEle).next().html('');
				$(domEle).closest('.control-group').removeClass('error');
			}
		}
		
	});
	if (errors > 0){
		return false;
	}else{
		return true;
	}
}
	

function comprovarNoms(element) {
	var formAux1 = $(element).val();
	if(formAux1.length > 2) {
		return true;

	} else {
		return false;
	}
}

function validateEmail(element) {
	var a = $(element).val(); // Guarda el valor de l'element.
	var filter = /^((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*?)\s*;?\s*)+/;
	if(filter.test(a)) {
		return true;
	} else {
		return false;
	}
}

function validarSex(element) {
	var selectedIndex = $('option:selected', element).index(); // Guarda l'index del select.
	if(selectedIndex > 0) {
		return true;
	} else {
		return false;
	}
}

function comprovarDataNaixement(element) {
	var dataActual = new Date();
	var aux1 = $(element).val();
	var aux2 = aux1.split('-')
	if((dataActual.getFullYear() - aux2[2]) > 18) {
		return true;
	} else {
		return false;
	}
}

function comprovarPass(element1, element2) {

	if(element1 == element2) {
		if(element1.length > 2) {
			return true;
		}
	}
	return false;
}


	/*	$('#pova').change(function(){
			//CODI
			var test = $('select option:selected').attr('data-target');
			alert(test);
			
			
			
			$(test).on('hidden', function(){
				$(test).collapse('show');
			})
			
			$(test).on('shown', function(){
				$(test).collapse('hide');
			})	
			
		});*/